オブジェクト指向 ログ
オブジェクト指向って一体なんなんですか?
プログラミング初心者なので教えてください。
あと関数型?とかい いうのもあるって聞きました。
オブジェクト指向は、ステートマシンを組み合わせてシステムを構築するものです。
関数型は普通のやつです。
オブジェクト指向言語から抜け出せないエンジニアの何が駄目かというと、データ中心に設計してしまうこと。彼らは何故か知らないけどデータ構造を決める事に極端に執着する。動くソフトウェアをつくりたいはずなのに、いつの間にか「ぼくの考えたさいきょうの全部入りstruct」をつくりたがる。
そして振る舞い(コード)はデータを操作するものだから、ナイーブに後から実装するものだと思っている。
型もデータ構造が規定するものであり、メソッドの型を気にしない。というかオーバーロードすれば便利じゃん?的な解像度
型がふるまいを変えるという認識がない。実際はオブジェクト指向言語でもクラスが振る舞いを規定していて何らかの変換を定義するが、それは型がキャストされる時に自動で行われるので、クラスを使う側ははっきり理解しなくていいと思っている。
そして彼らがメソッドを定義するときは、それは「特定のクラス(スーパークラスを含む)」という「具体的な」型に対するもののみである。なぜならオブジェクト指向言語にはサブタイピングのみしか存在しないためである。
そしてそれが異常なことと気づく機会は、たとえばadd()を実装
する等すればわかると思うが、オブジェクト指向言語の人はそういうコードを核のはライブラリを書くエラい人の仕事で、自分は型システムのコーナーケースを踏む事はないだろうと考えてる(偏見)